4c9ec4249a8d6cf918cf2f68b94d79496e539f73,enterprise/main/java/org/neo4j/kernel/ha/MasterClient.java,MasterClient,getChannel,#,95

Before Change


            if ( channel == null )
            {
                // Get unused or create if no unused found
                channel = unusedChannels.poll();
                if ( channel == null )
                {
                    ChannelFuture channelFuture = bootstrap.connect(
                            new InetSocketAddress( hostNameOrIp, port ) );

After Change


            if ( channel == null )
            {
                // Get unused channel from the channel pool
                while ( channel == null )
                {
                    Channel unusedChannel = unusedChannels.poll();
                    if ( unusedChannel == null )
                    {
                        break;
                    }
                    else if ( unusedChannel.isConnected() )
                    {
                        System.out.println( "Found unused (and still connected) channel" );
                        channel = unusedChannel;
                    }
                    else
                    {
                        System.out.println( "Found unused stale channel, discarding it" );
                    }
                }

                // No unused channel found, create a new one
                if ( channel == null )
                {
                    ChannelFuture channelFuture = bootstrap.connect(
                            new InetSocketAddress( hostNameOrIp, port ) );
                    channelFuture.awaitUninterruptibly();
                    channel = channelFuture.getChannel();
                    System.out.println( "Opened a new channel" );
                }
                        
                channels.put( thread, channel );